package com.zyf.lj.service;

import com.zyf.lj.entity.JobApplication;
import com.zyf.lj.vo.PageResult;

import java.util.List;

/**
 * 职位申请服务接口
 */
public interface JobApplicationService {
    
    /**
     * 提交职位申请
     * @param application 职位申请对象
     * @return 是否提交成功
     */
    boolean submitApplication(JobApplication application);
    
    /**
     * 更新职位申请
     * @param application 职位申请对象
     * @return 是否更新成功
     */
    boolean updateApplication(JobApplication application);
    
    /**
     * 根据ID查询职位申请
     * @param id 职位申请ID
     * @return 职位申请对象
     */
    JobApplication getApplicationById(Integer id);
    
    /**
     * 根据ID删除职位申请
     * @param id 职位申请ID
     * @return 是否删除成功
     */
    boolean deleteApplicationById(Integer id);
    
    /**
     * 查询所有职位申请
     * @return 职位申请列表
     */
    List<JobApplication> getAllApplications();
    
    /**
     * 根据职位ID查询职位申请
     * @param jobId 职位ID
     * @return 职位申请列表
     */
    List<JobApplication> getApplicationsByJobId(Integer jobId);
    
    /**
     * 根据手机号查询职位申请
     * @param phone 手机号
     * @return 职位申请列表
     */
    List<JobApplication> getApplicationsByPhone(String phone);
    
    /**
     * 根据状态查询职位申请
     * @param status 状态
     * @return 职位申请列表
     */
    List<JobApplication> getApplicationsByStatus(Integer status);
    
    /**
     * 分页查询职位申请
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param jobId 职位ID
     * @param status 状态
     * @param orderBy 排序字段
     * @param orderType 排序类型
     * @return 分页结果
     */
    PageResult<JobApplication> getApplicationPage(
        Integer pageNum, 
        Integer pageSize, 
        Integer jobId, 
        Integer status, 
        String orderBy, 
        String orderType
    );
} 